이모션
이모션 소개
React를 사용하여 애플리케이션을 개발하다 보면 스타일을 관리하는 것이 중요한 부분이 됩니다. 스타일링 방법에는 여러 가지가 있지만, 그중 **이모션(Emotion)**은 매우 강력하고 유연한 CSS-in-JS 라이브러리입니다. 이모션을 사용하면 JavaScript 코드 내에서 CSS를 작성하고, 동적으로 스타일을 적용할 수 있습니다. 이 글에서는 이모션의 기본 사용법과 장점을 알아보겠습니다.
이모션 설치하기
이모션을 사용하기 위해서는 먼저 패키지를 설치해야 합니다. 다음 명령어를 통해 이모션을 설치할 수 있습니다.
npm install @emotion/react @emotion/styled
기본 사용법
이모션은 두 가지 주요 방식으로 스타일을 적용할 수 있습니다: styled components와 css.
styled components 사용
이모션의 styled
함수를 사용하면 컴포넌트를 쉽게 스타일링할 수 있습니다. 다음은 styled
함수를 사용하는 예제입니다.
/** @jsxImportSource @emotion/react */
import { css } from '@emotion/react';
import styled from '@emotion/styled';
const Button = styled.button`
padding: 8px 16px;
background-color: #3498db;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
&:hover {
background-color: #2980b9;
}
`;
function App() {
return (
<div>
<Button>Click me</Button>
</div>
);
}
export default App;
이 예제에서 Button
컴포넌트는 styled.button
으로 생성되었으며, CSS 스타일이 포함되어 있습니다.
css 사용
이모션의 css
함수를 사용하면 컴포넌트의 스타일을 객체 형태로 작성할 수 있습니다. 이 방법은 조건부 스타일링이나 동적 스타일링에 유용합니다.
import { css } from '@emotion/react';
const buttonStyle = css`
padding: 8px 16px;
background-color: #3498db;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
&:hover {
background-color: #2980b9;
}
`;
function App() {
return (
<div>
<button css={buttonStyle}>Click me</button>
</div>
);
}
export default App;
여기서 buttonStyle
은 css
함수를 사용하여 정의되었으며, JSX에서 css
속성으로 적용됩니다.
주의할 점
- 동적 스타일링: 이모션은 JavaScript 코드 내에서 CSS 를 작성하기 때문에 동적으로 스타일을 변경하거나 조건부 스타일을 쉽게 적용할 수 있습니다. 이를 통해 사용자 입력이나 상태 변화에 따라 유연하게 스타일을 변경할 수 있습니다.
- CSS-in-JS의 성능: CSS-in-JS 방식은 성능에 영향을 미칠 수 있습니다. 이모션은 성능 최적화가 잘 되어 있지만, 스타일을 많이 변경하는 경우 성능 이슈를 염두에 두어야 합니다.
- 서버 사이드 렌더링(SSR): 이모션은 SSR을 지원하지만, 설정이 필요할 수 있습니다. 공식 문서를 참고하여 설정을 정확히 해야 합니다.
더 알아보기
- CSS-in-JS: JavaScript 코드 내에서 CSS를 작성하는 방식. 이모션을 포함한 다양한 라이브러리들이 존재합니다.
- Styled Components: styled 함수를 사용하여 컴포넌트를 스타일링하는 방법.
- 동적 스타일링: 사용자 입력이나 상태 변화에 따라 스타일을 동적으로 변경하는 방법.
내용 요약
이모션은 React 애플리케이션에서 CSS-in-JS 방식을 사용하여 스타일을 적용할 수 있는 강력한 라이브러리입니다. styled
와 css
함수를 통해 컴포넌트를 쉽게 스타일링할 수 있으며, 동적 스타일링과 조건부 스타일링에 유용합니다. 이모션의 성능 최적화와 SSR 설정을 염두에 두어야 합니다.